package br.com.klanpaia;

import java.util.Iterator;



import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Camera;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.Animation;
import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.physics.box2d.Body;
import com.badlogic.gdx.physics.box2d.World;
import com.lights.box2dLight.ConeLight;
import com.lights.box2dLight.RayHandler;




public class AI {
	private ConeLight cone;
	private Iterator<Body> ListaDeCorpos;
	private World world;
	private Controle controle;
	private RayHandler handler;
	private Camera camera;
	
	
	//Personagens do Game
		private TextureRegion[] quadros;
		private Texture jogador;                       
		private Animation animePlayer; 	
		private Sprite sprite;
		private SpriteBatch batch;
	    float stateTime;  
		float graus, graus2;
	
	public AI(World world, Controle controle, Camera camera, RayHandler handler) {
		super();
		this.world = world;
		this.controle = controle;
		this.handler = handler;
		this.camera = camera;
		
		
		cone = new ConeLight(this.handler, 500, new Color(GlobalConfig.luzCor, 
				GlobalConfig.luzCor, GlobalConfig.luzCor, GlobalConfig.luzAlpha), GlobalConfig.luzProject, .5f, .5f, GlobalConfig.luzLagura, 30);
		
		
		byte coluna = 4, linha = 4;
		
		//Desenhar o jogador
	
				jogador = new Texture(Gdx.files.internal("data/Imagem/personagem.png"));
				quadros = new TextureRegion[linha * coluna];
				TextureRegion[][] tmp = TextureRegion.split(jogador, 48, 48);
				
				 int index = 0;
				 for (int i = 0; i < linha; i++) {
		             for (int j = 0; j < coluna; j++) {
		            	 quadros[index++] = tmp[i][j];
		            	// Gdx.app.log("uia", ""+index);
		             }
		     }
		
				  animePlayer = new Animation(0.1f, quadros);
				  sprite = new Sprite(animePlayer.getKeyFrame(0, true));
				  batch = new SpriteBatch(1);
				  
	}

	public void updateJogador(){
	  ListaDeCorpos = world.getBodies();
	   stateTime += Gdx.graphics.getDeltaTime();

		while(ListaDeCorpos.hasNext()){
			
			
			Body corpo = ListaDeCorpos.next();
			Object object = corpo.getUserData();
			if(object.getClass().getSimpleName().equals("Ator")){
				
				camera.position.x = corpo.getPosition().x;
				camera.position.y = corpo.getPosition().y;
				
				
				
				if(controle.isMovimentouMouse()){
					controle.setMovimentouMouse(false);
				
				graus = (float) ((Math.atan2(controle.touchDown.x - corpo.getPosition().x,
						-(controle.touchDown.y - corpo.getPosition().y)) * 180d/Math.PI) + 90f);
				      
				cone.setDirection(graus);
				
				}
				
				if(controle.isBotaoPressionado() == true){
					//controle.setBotaoPressionado(false);
					 sprite.setRegion(animePlayer.getKeyFrame(stateTime, true));
					switch(controle.getDirecional()){
					case Cima:
						corpo.setLinearVelocity(0, -GlobalConfig.velocidadeJogador);
	
						break;
						
					case Baixo:
						
						corpo.setLinearVelocity(0, GlobalConfig.velocidadeJogador);
			
					break;
					case Direita:
						corpo.setLinearVelocity(-GlobalConfig.velocidadeJogador, 0);
					
					break;
					case Esquerda:
						corpo.setLinearVelocity(GlobalConfig.velocidadeJogador, 0);
					break;	
					
					default:
						corpo.setLinearVelocity(0, 0);
						sprite.setRegion(animePlayer.getKeyFrame(0, false));
					break;
					
					}		
					
				}
				
			
				    batch.setProjectionMatrix(camera.combined);
					batch.begin(); 
					sprite.rotate90(true);
					sprite.setPosition(corpo.getPosition().x, corpo.getPosition().y);
					cone.setPosition(corpo.getPosition().x, corpo.getPosition().y);
					batch.draw(sprite, sprite.getX()-.5f, sprite.getY() -.5f, .5f, .5f, 1, 1, 1, 1, graus -60);
					batch.end();
				
					animePlayer.getKeyFrame(0, false);
				
			}	
		}

	}

}
